#include <my_header.h>
// 创建子进程之后父子进程再各自打开文件 写入数据时
// 可能会出现数据覆盖的情况
// 最终写入数据流程:父:fatfat(sleep)->子:sonson(覆盖)
// (sleep)->twoson->父:fat1 sonsonfat1on
/* Usage: ./3_fork_fd_after */
int main(void){                                  
    pid_t pid = fork(); // 先fork子进程
    if(pid == 0)
    {
        // 子进程
        // 再打开文件
        int fd = open("file_after", O_RDWR);
        write(fd, "sonson", 6);
        sleep(1);
        write(fd, "twoson", 6);
    }else{
        // 父进程 打开文件
        int fd = open("file_after", O_RDWR);
        write(fd, "fatfat", 6);
        sleep(1);
        write(fd, "fat1", 4);
    }
    return 0;
}

#if 0
    当使用fork()函数创建子进程之后,父进程和子进程分别打
开了一个文件，操作系统维护会创建两个不同的文件表项,各自
独立维护偏移量(即使底层的文件系统对象/inode是共享的)。
    这就意味着,父子进程对同一个文件不会共享读写位置。
#endif
